from tool import *
import json
#导入json库
import time
#导入time库
class admin:
    def __init__(self):
        '''
        数据格式:
        {
            'Name':'张***',（昵称）
            'IdUser':511621*******6132,（身份证号码）
            'Telephone':173******80,（电话号码）
            'PassWord':369258,（密码）
            'CardNumber':6975434797,（卡号）
            'Money':200.00（账户余额,使用浮点数，后期对余额进行利息算法）
        }
        '''
        self.__DATA = []
        #初始化数据储存
        self.__USER = "admin"
        self.__PASS = "123456"
        #初始化管理员账号密码
    
    
    #判断银行卡是否存在
    def IsCardNumber(self,CardNumber):
        for i in self.__DATA:
            #遍历列表，找到卡号对应的字典数据
            #然后后返回是否成功
            if i["CardNumber"] == CardNumber:
                return True
            return False
    #判断密码是否正确    
    def IsPassWord(self,CardNumber,PassWord):
        for i in self.__DATA:
            #遍历列表，找到对应卡号数据，对其密码进行对比，然后返回成功值
            if i["CardNumber"] == CardNumber and i["PassWord"] == PassWord:
                return True
            return False    
        
        
    #开通账户：
    #@notes Name = 用户名
    #@notes IdUser = 身份证号码
    #@notes Telephone = 手机号
    #@notes PassWord = 密码
    #@notes Money = 预存款    
    def AccountUser(self,Name,IdUser,Telephone,PassWord,Money):
        _card = tool()
        #实例化自定义的卡号生成函数
        CardNumber = _card.GenerateCardNumber()
        #使用tool类中的GenerateCardNumber()方法创建卡号，返回整数类型
        data = dict(Name=Name,IdUser=IdUser,Telephone=Telephone,PassWord=PassWord,CardNumber=CardNumber,Money=Money)
        #创建临时数据字典
        self.__DATA.append(data)
        #将临时数据添加到总数据里
        return CardNumber
    #账户查询：
    #@notes CardNumber = 银行卡号
    #返回余额，用户名
    def QueryUser(self,CardNumber):
         for i in self.__DATA:
             if i["CardNumber"] == CardNumber:
                 data = dict(CardNumber=CardNumber,Name=i["Name"],Money=i["Money"])
                 #创建临时数据
                 return data
                 #返回临时数据
         return None;
    #密码验证
    #@notes CardNumber = 银行卡号
    def PassVerification(self,CardNumber):
        count = 1;
        while count <= 3:
            #3次判断密码是否正确
            #正确直接跳出循环，并且返回True
            #3次都错误直接返回False
            #输入函数使用def方法嵌套
            PassWord = int(input("请输入密码："))
            for i in self.__DATA:
                #获取到输入的密码
                if i["CardNumber"] == CardNumber and i["PassWord"] == PassWord:
                    return True
                    break
                    #跳出方法循环
            count=count+1
        return False;
    #存盘功能，以json功能储存数据
    def save(self):
        fileName = f"./data/{time.strftime('%Y-%m-%d_%H-%M-%S',time.gmtime())}.json"
        file = open(fileName,'w')
        #打开data目录
        #并且赋予写的权限
        file.write(json.dumps(self.__DATA,ensure_ascii=False,sort_keys=True, indent=4, separators=(',', ':')))
        '''
        json.dumps()转json数据
        ensure_ascii=False 不自动转unicode
        sort_keys=True 开启格式化
        separators=(',', ':') 格式
        '''
        #写入内容
        file.close()
        #关闭文件
        